iT邦幫忙

DAY 10
0

成為資料工程師最初的 28 堂課系列 第 10

資料工程師第 9/28 課: 軟體工程

  • 分享至 

  • xImage
  •  

[修讀原因]

軟體工程這一科目也是很麻煩的一堂, 不是這堂課很難, 而是眾說紛云, 若只是各說各的就算了, 甚至有些是背道而馳互相矛盾, 但這也是合理的, 畢竟這堂課是種經驗論為主的結果論, 只要最後是有成功實用都是對的, 就像管理學一樣.

當然軟體工程較麻煩的地方也是方法論很多種, 每一個方法都是有用的地方, 甚至在某些場合跟定義是不合用的, 就像我曾說在 Big Data 的 SD, 是無法用 Top-Down Design 的 SA 與 SD.

但這堂課是容易被忽略或被錯誤認知的原因不只如此, 甚至有兩個最麻煩的原因:

  1. 通常學 Software Engineering 的人還沒有真正實務的系統開發經驗.
  2. 已在業界有實務的人, 在看的書都是各別單獨觀點, 有時體系很容易不了解與衝突

所以這堂課雖然是很基礎, 但更須要有經驗在來學會更了解.

下面是常見軟工的定義:

  1. 創立與使用健全的工程原則,以便經濟地獲得可靠且高效率的軟體。[3]
  2. 應用系統化,遵從原則,可被計量的方法來發展、操作及維護軟體;也就是把工程應用到軟體上。[4]
  3. 與開發、管理及更新軟體產品有關的理論、方法及工具。[5]
  4. 一種知識或學科,目標是生產品質良好、準時交貨、符合預算,並滿足用戶所需的軟體。[6]
  5. 實際應用科學知識在設計、建構電腦程式,與相伴而來所產生的檔案,以及後續的操作和維護上。[7]
  6. 使用與系統化生產和維護軟體產品有關之技術與管理的知識,使軟體開發與修改可在有限的時間與費用下進行。[8]
  7. 建造由工程師團隊所開發之大型軟體系統有關的知識學科。[9]
  8. 對軟體分析、設計、實施及維護的一種系統化方法。[10]
  9. 系統化地應用工具和技術於開發以電腦為主的應用。[11]
  10. 軟體工程是關於設計和開發優質軟體。[12]

[基本資訊]

  • 課程題目: Software Engineering
  • 大學學程: 資訊類大三必選修
  • 困難度: **
  • 必要度: ****
  • 所須時間: **
  • 建議書輯: Software Engineering (9th Edition)

[基本介紹]

ACM與IEEE Computer Society聯合修定的SWEBOK[13](Software Engineering Body of Knowledge)提到,軟體工程領域中的核心知識包括:

  1. 軟體需求(Software requirements)
  2. 軟體設計(Software design)
  3. 軟體建構(Software construction)
  4. 軟體測試(Software test)
  5. 軟體維護與更新(Software maintenance)
  6. 軟體構型管理(Software Configuration Management, SCM)
  7. 軟體工程管理(Software Engineering Management)
  8. 軟體開發過程(Software Development Process)
  9. 軟體工程工具與方法(Software Engineering Tools and methods)
  10. 軟體品質(Software Quality)

上面是 Copy & Paste 的, 因為這部份真的沒甚麼爭議與討論, 大家看任何一本軟工或 SA/SD 的書都會講到這些題目, 而最大的問題是 SE (Software Engineer) 中, 現在當紅的理論有:

很多資料在 http://irw.ncut.edu.tw/peterju/se.html 都可以看到, 我就不寫了.

在軟工中, 這幾年最熱門的參考書有

  • 人月神話
  • 沒有銀彈
  • 誰說_大象_不會_跳舞_
  • 聚沙成塔

事實上軟工在這幾年無論就工具上, 就實務上真的有不少轉變, 我在很久以前說過, 一個好的 IT 人, 每十年都要重看最新一版的計算機架構, 在某方面而言, 軟體工程也是如此.

[修習方式]

建議線上課程:

建議電子書:

其他關鍵字:

  • 瀑布式與循環式
  • 開閉原則(Open-Closed Principle ; OCP),
  • Liskov代換原則(Liskov Substitution Principle; LSP),
  • 依賴倒轉原則(Dependency Inversion Principle; DIP)
  • 介面隔離原則(Interface Segregation Principle; ISP)
  • 組合/聚合重複使用原則(Composition / AggregationPrinciple ; CARP)
  • CMMI(Capability Maturity Model Integrated)

上一篇
資料工程師第 8/28 課: 多變量分析
下一篇
資料工程師第 10/28 課: 作業系統
系列文
成為資料工程師最初的 28 堂課30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
a926
iT邦新手 5 級 ‧ 2014-11-20 23:15:03

SOLID真的算是現今Developer一定要懂的東西。我今年了解這個之後,只能說以前寫的程式實在太髒啦!!!

我要留言

立即登入留言